home *** CD-ROM | disk | FTP | other *** search
- #!/bin/sh
-
- # This script reads filenames from STDIN and outputs any relevant provides
- # information that needs to be included in the package.
-
- PATH=/usr/bin:/usr/ccs/bin:/usr/sbin:/sbin:/usr/local/bin;
- export PATH;
-
- javadeps_args='--provides --rpmformat --keywords --starprov'
-
-
- IGNORE_DEPS="@"
- BUILDROOT="/"
-
-
-
- # Loop over all args
-
- while :
- do
-
- # Break out if there are no more args
- case $# in
- 0)
- break
- ;;
- esac
-
- # Get the first arg, and shuffle
- option=$1
- shift
-
- # Make all options have two hyphens
- orig_option=$option # Save original for error messages
- case $option in
- --*) ;;
- -*) option=-$option ;;
- esac
-
-
- case $option in
- --buildroot)
- BUILDROOT=$1
- shift
- ;;
- --ignore_deps)
- IGNORE_DEPS=$1
- shift
- ;;
- --help)
- echo $usage
- exit 0
- ;;
- *)
- echo "$0: Unrecognized option: \"$orig_option\"; use --help for usage." >&2
- exit 1
- ;;
- esac
- done
-
-
-
-
-
-
-
- for file in `cat -`
- do
-
- # this section is for processing based on the interpreter specified in
- # the '#!' line.
-
- case `get_magic $file` in
-
- bash)
- print_deps --identifier executable $file
- print_deps --identifier executable --basename $file
- ;;
-
- sh)
- print_deps --identifier executable $file
- print_deps --identifier executable --basename $file
- ;;
-
- perl)
- perl.prov $file;
- ;;
-
- wish)
- print_deps --identifier tcl $file
- print_deps --identifier tcl --basename $file
- ;;
-
-
- esac
-
-
- # this section is for processing based on filename matching. It is
- # crude but needed as many library types have no easily identifiable
- # '#!' line
-
- case $file in
-
- # We can not count on finding a SONAME in third party Libraries though
- # they tend to include softlinks with the correct SONMAE name. We
- # must assume anything with a *\.so* and is of type 'dynamic lib' is a
- # library. This scriptlet works because 'file' follows soft links.
-
-
- *lib*.so*)
- /usr/ucb/file -L $file 2>/dev/null | \
- grep "ELF.*dynamic lib" | cut -d: -f1 | \
- xargs -n 1 basename | print_deps --identifier so;
-
- # keep this for backward compatibility till we have converted
- # everything.
-
- /usr/ucb/file -L $file 2>/dev/null | \
- grep "ELF.*dynamic lib" | cut -d: -f1 | \
- xargs -n 1 basename;
- ;;
-
- # Java jar files are just a special kind of zip files.
- # Sun OS 5.5.1 does not understand zip archives, it calls them 'data'
- # Sun OS 5.6 has this line in /etc/magic
- # 0 string PK\003\004 ZIP archive
-
- *.jar)
-
- unzip -p $file |\
- javadeps $javadeps_args -;
-
- ;;
-
- # there are enough jar files out there with zip extensions that we
- # need to have a separate entry
-
- *.zip)
-
- unzip -p $file |\
- javadeps $javadeps_args -;
-
- ;;
-
- # Java Class files
- # Sun OS 5.6 has this line in /etc/magic
- # 0 string \312\376\272\276 java class file
-
- *.class)
-
- javadeps $javadeps_args $file;
-
- ;;
-
-
-
- # Perl libraries are hard to detect. Use file endings.
-
- *.pl)
-
- perl.prov $file;
-
- # pl files are often required using the .pl extension
- # so provide that name as well
-
- print_deps --identifier perl --basename $file
- ;;
-
- *.pm)
-
- perl.prov $file;
- ;;
-
- *.ph)
-
- # ph files do not use the package name inside the file.
- # perlmodlib documentation says:
-
- # the .ph files made by h2ph will probably end up as
- # extension modules made by h2xs.
-
- # so do not expend much effort on these.
-
- print_deps --identifier perl --basename $file
-
- ;;
-
- # tcl libraries are hard to detect. Use file endings.
-
- *.tcl)
-
- print_deps --identifier tcl $file
- print_deps --identifier tcl --basename $file
- ;;
-
-
-
- *)
-
- # Dependencies for html documenets are a bit ill defined. Lets try
- # using file endings like the browsers do.
- # precise globbing is hard so I use egrep instead of the case statement.
-
- hfile=`basename $file | egrep '\.((cgi)|(ps)|(pdf)|(png)|(jpg)|(gif)|(tiff)|(tif)|(xbm)|(html)|(htm)|(shtml)|(jhtml))$'`;
-
- if [ "${hfile}" != "" ]
- then
- print_deps --identifier http --basename $file
- fi
-
- # all files are candidates for being an executable. Let the
- # magic.prov script figure out what should be considered
- # execuables.
-
- magic.prov --buildroot=$BUILDROOT $file
-
- ;;
-
-
- esac
-
- done | sort -u | egrep -v \'$IGNORE_DEPS\'
-
-